package uy.org.softtech.cssuite.helpers;

import static org.apache.commons.lang.StringUtils.leftPad;

import java.math.BigDecimal;
import java.math.RoundingMode;

import javax.xml.bind.annotation.XmlTransient;

@XmlTransient
public class HelperFinanzas {
	
	/* 
	 * ---------------------------------------
	 * --------      FORMATEOS     -----------
	 * ---------------------------------------
	 */
	/**
	 * Formatea y genera el identificador para una factura de cliente siguiendo el siguiente criterio:
	 * Número de 16 dígitos que se completan con las siguientes reglas:
	 * <ul>
	 * 	<li>Número de cuenta del cliente completado con 0 a la izquierda hasta llegar a los 10 dígitos</li>
	 *  <li>4 dígitos del año de facturación</li>
	 *  <li>2 dígitos del mes de facturación</li>
	 * </ul>
	 * 
	 * @param cuenta - Identificador de la cuenta
	 * @param anio - Año de facturación
	 * @param mes - Mes de facturación
	 * @return el identificador de la factura generado
	 */
	public static synchronized String formatearIdentificador(Long cuenta, Integer anio, Integer mes) {
		StringBuffer buffer = new StringBuffer();
		buffer.append(leftPad(Long.toString(cuenta), 10, "0"));
		buffer.append(Integer.toString(anio));
		buffer.append(leftPad(Integer.toString(mes), 2, "0"));
		return buffer.toString();
	}
	
	/**
	 * Formatea el importe para mostrar el símbolo de moneda por delante y redondea el valor para usar sólo 2 decimales. 
	 * Si el importe es nulo, retorna un string vacío.
	 * 
	 * @param importe - Importe a formatear
	 * @param locale - Localización para obtener el símbolo a mostrar
	 * @author fabian.lobo
	 */
	public static synchronized String formatearImporte(BigDecimal importe) {
		if(importe == null) {
			return "";
		}
				
		StringBuffer buffer = new StringBuffer();
		buffer.append("$ ").append(importe.setScale(2, RoundingMode.HALF_UP).toString());
		return buffer.toString();
	}

}
